var adminApp = angular.module('oaApp',['ui.router','ui.bootstrap']);

/**
 * 由于整个应用都会和路由打交道，所以这里把$state和$stateParams这两个对象放到$rootScope上，方便其它地方引用和注入。
 * 这里的run方法只会在angular启动的时候运行一次。
 * @param  {[type]} $rootScope
 * @param  {[type]} $state
 * @param  {[type]} $stateParams
 * @return {[type]}
 */
adminApp.run(function($rootScope, $state, $stateParams) {
    $rootScope.$state = $state;
    $rootScope.$stateParams = $stateParams;
});

/**
 * 配置路由。
 * 注意这里采用的是ui-router这个路由，而不是ng原生的路由。
 * ng原生的路由不能支持嵌套视图，所以这里必须使用ui-router。
 * @param  {[type]} $stateProvider
 * @param  {[type]} $urlRouterProvider
 * @return {[type]}
 */
adminApp.config(function($stateProvider, $urlRouterProvider,$httpProvider){
    //Defines a path that is used when an invalid route is requested.
    $urlRouterProvider.otherwise('/index');
    $stateProvider.state('index',{
        url:'/index',
        views:{
            '':{
                templateUrl : '/uj-admin-tpls/oa/home.html'
            },

            'main@index' : {
                templateUrl : '/uj-admin-tpls/oa/member.html'
            }
        }
    }).state('index.memberMng',{
        url : '/memberMng',
        views : {
            'main@index':{
                templateUrl : '/uj-admin-tpls/oa/member.html'
            }
        }
    }).state('index.memberForm',{
        url : '/memberForm/:id',
        views : {
            'main@index':{
                templateUrl : '/uj-admin-tpls/oa/memberForm.html'
            }
        }
    })

    $httpProvider.interceptors.push('httpRequestInterceptor');
});

adminApp.factory('httpRequestInterceptor', function($q, $location){

    return{
        'responseError' : function(rejection){
            if(rejection.status == 400 && rejection.data.errorCode == "LoginRequired"){
                window.location = '/uj-oa-login';
            }

            return $q.reject(rejection);
        }

    }

});